# -.- coding: utf-8 -.-

from django.shortcuts import render_to_response
from fichas.models import *
from django.template import RequestContext
from django.contrib.auth.decorators import login_required
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
from fichas.forms import *

###FORMULARIO ESTANDAR
# Aprovechamiento de una funcionalidad estándar para todos los pasos de la creación de ficha que únicamente impliquen
# el relleno de datos de un formulario y su validación y almacenamiento. El siguiente paso define a donde se salta en el
# formulario
@login_required
def formularioEstandar(request, personaje=None, formulario=None, siguiente='inicio', template_name = 'fichas/formulario.html', extra_context = {}):
    #extraemos el usuario que será propietario de la ficha
    jugador = Jugador.objects.get(jugador=request.user)
    
    if request.method == 'POST':
        extra_context['form'] = formulario(propietario=request.user.username, personaje=personaje, data = request.POST)
        if extra_context['form'].is_valid():
            extra_context['form'].save()
            return HttpResponseRedirect(reverse(siguiente, args=[personaje]))
    else:
        diccionario = {}
        try:
            ficha = FichaAnima.objects.get(propietario=jugador, personaje=personaje)
            for attr, value in ficha.__dict__.iteritems():
                diccionario[attr] = value
        except FichaAnima.DoesNotExist:
            print "ERROR AL QUERER SACAR UNA FICHA QUE NO EXISTE"
        extra_context['form'] = formulario(propietario=request.user.username, personaje=personaje, initial=diccionario)
    
    return render_to_response(template_name, extra_context, context_instance=RequestContext(request))

### FORMULARIOS MÁS ESPECIFICOS
#NUEVAS FICHAS
@login_required
def nuevaFicha(request, formulario=None, template_name = 'fichas/formulario.html', extra_context = {}):
    #extraemos el usuario que será propietario de la ficha
    jugador = Jugador.objects.get(jugador=request.user)
    
    if request.method == 'POST':
        form = formulario(data = request.POST)
        if form.is_valid():
            personaje = form.save_propietario(propietario=jugador)
            return HttpResponseRedirect(reverse('datosbasicos', args=[personaje]))
    else:
        form = formulario()
    
    extra_context['form'] = form
    return render_to_response(template_name, extra_context, context_instance=RequestContext(request))

### OTRAS VISTAS QUE NO TIENEN FORMULARIOS
@login_required
def listarCategorias(request, personaje=None, template_name = 'fichas/listacategorias.html', extra_context = {}):
    if request.user.is_authenticated():
        prop = Jugador.objects.get(jugador=request.user)
        ficha_jugador = FichaAnima.objects.get(propietario=prop, personaje=personaje)
        extra_context['pj'] = ficha_jugador.personaje
    extra_context['lista'] = Categoria.objects.all()
    return render_to_response(template_name, extra_context, context_instance=RequestContext(request))

@login_required
def escogerCategoria(request, personaje, categoria):
    if request.user.is_authenticated():
        prop = Jugador.objects.get(jugador=request.user)
        ficha = FichaAnima.objects.get(propietario=prop, personaje=personaje)
        ficha.categoria = Categoria.objects.get(nombre=categoria)
        ficha.save()
    #return HttpResponseRedirect(reverse('listarrazas', args=[personaje]))
    return HttpResponseRedirect(reverse('fichaedicion', args=[personaje]))

@login_required
def listarRazas(request, personaje=None, template_name = 'fichas/listarazas.html', extra_context = {}):
    if request.user.is_authenticated():
        prop = Jugador.objects.get(jugador=request.user)
        ficha_jugador = FichaAnima.objects.get(propietario=prop, personaje=personaje)
        extra_context['pj'] = ficha_jugador.personaje
    extra_context['lista'] = Raza.objects.all()
    return render_to_response(template_name, extra_context, context_instance=RequestContext(request))

@login_required
def escogerRaza(request, personaje, raza):
    if request.user.is_authenticated():
        prop = Jugador.objects.get(jugador=request.user)
        ficha = FichaAnima.objects.get(propietario=prop, personaje=personaje)
        ficha.raza = Raza.objects.get(nombre=raza)
        ficha.save()
    return HttpResponseRedirect(reverse('inicio', args=[]))

@login_required
def participacion(request, extra_context={}, template_name='inicial.html'):
    jug = Jugador.objects.get(jugador=request.user)
    if jug.participativo == True:
        jug.participativo = False
    else:
        jug.participativo = True
    jug.save()
    return HttpResponseRedirect(reverse('inicial'))



#############################
#############################

BONO_PRIMARIA = [-30,-20,-10,-5,0,5,5,10,10,15,20,20,25,25,30,35,35,40,40,45]

@login_required
def fichaEdicion(request, personaje=None, template_name = 'fichas/generaledicion.html', extra_context = {}):
    jugador = Jugador.objects.get(jugador=request.user)
    extra_context['ficha'] = FichaAnima.objects.get(propietario=jugador, personaje=personaje)
    extra_context['ficha_form'] = ficha(request, personaje, jugador, extra_context['ficha'])
    
    #Una vez extraida la ficha, extraemos todas las tablas asociadas a dicha ficha para ser pintadas
    #La tabla de caracteristicas principales
    extra_context['caracteristicasprincipales'] = CaracteristicasPrincipales.objects.filter(ficha = extra_context['ficha'], valida=True).order_by('nombre__nombre')
    print extra_context['caracteristicasprincipales']
    print BONO_PRIMARIA
    if len(extra_context['caracteristicasprincipales']) == 0:
        extra_context['caracteristicasprincipales'] = TipoCaracteristicaPrincipal.objects.all().order_by('nombre')
    else:
        for i in range(0,len(extra_context['caracteristicasprincipales'])):
            extra_context['caracteristicasprincipales'][i].bono = BONO_PRIMARIA[int(extra_context['caracteristicasprincipales'][i].actual)-1]
    
    #La tabla turno
    # try:
    #     extra_context['turno'] = Turno.objects.filter(ficha = extra_context['ficha'], valida=True)
    #     if not extra_context['turno']:
    #         extra_context['tipoturno'] = TipoTurno.objects.all()
    
        
    #     #La tabla vida
    #     extra_context['vida'] = Vida.objects.get(ficha = extra_context['ficha'], valida=True)
        
    #     #La tabla Ataque
    #     extra_context['ataque'] = Ataque.objects.get(ficha = extra_context['ficha'], valida=True)
        
    #     #La tabla defensa
    #     extra_context['defensa'] = Defensa.objects.get(ficha = extra_context['ficha'], valida=True)
        
    #     #La tabla esquiva
    #     extra_context['esquiva'] = Esquiva.objects.get(ficha = extra_context['ficha'], valida=True)
    
    # except:
    #     pass
    
    #La tabla ...
    
    #Pintamos la ficha completa
    return render_to_response(template_name, extra_context, context_instance=RequestContext(request))
    

#############################
# FORMULARIOS SOBRE LA FICHA!
def ficha(request, personaje, jugador, ficha):
    if request.method == "POST":
        form = FichaForm(propietario=request.user.username, personaje=personaje, data = request.POST)
        if form.is_valid():
            form.save()
    else:
        diccionario = {}
        try:
            for attr, value in ficha.__dict__.iteritems():
                diccionario[attr] = value
        except FichaAnima.DoesNotExist:
            print "ERROR AL QUERER SACAR UNA FICHA QUE NO EXISTE"
        form = FichaForm(propietario=request.user.username, personaje=personaje, initial=diccionario)

    return form

#Aquí se enviará la información de las características principales modificadas
#Que serán insertadas o modificadas en bbdd según si ya existieran previamente o no
def caracteristicasprincipales(request, personaje=None):
    if request.method == 'POST':
        jugador = Jugador.objects.get(jugador=request.user)
        ficha = FichaAnima.objects.get(propietario=jugador, personaje=personaje)
        #sacamos todas las características
        cars = TipoCaracteristicaPrincipal.objects.all()
        for car in cars:
            try:
                p = CaracteristicasPrincipales.objects.get(ficha = ficha, valida=True, nombre=car)
                if request.POST[car.nombre+"_base"] and request.POST[car.nombre+"_actual"]:
                    p.base = request.POST[car.nombre+"_base"]
                    p.actual = request.POST[car.nombre+"_actual"]
                    p.save()
            except:
                if request.POST[car.nombre+"_base"]:
                    data = {'base': request.POST[car.nombre+"_base"]}
                    p = CaracteristicasPrincipalesForm(propietario=request.user.username, personaje=personaje, data = data)
                    if p.is_valid():
                        p.save(car.nombre)

        return HttpResponseRedirect(reverse('fichaedicion', args=[personaje]))
    else:
        #Por defecto siempre manda a la edición de la ficha
        return HttpResponseRedirect(reverse('fichaedicion', args=[personaje]))






#VISTA EN PRUEBAS
#@login_required
#def ficha(request, personaje=None, paso=None, formulario=None, template_name='gestor/formulario.html', extra_context={}):
    ##esto es para mostrar las fichas en el margen
    #elem = None
    #diccionario = {}
    #form = None
    #info_ficha = {} #diccionario para q en el paso de las ventajas y siempre q se usen manytomanyfields podamos pasarle info necesaria (x ej. las ventajas q ya ha elegido)

    #if request.user.is_authenticated():
        #jug = Jugador.objects.get(jugador=request.user)
        #if personaje:
            #laficha = FichaAnima.objects.get(propietario=jug, personaje=personaje)
        #else:
            #laficha = None
    
    #if request.method == 'POST':
        #if paso is None:
            #form = formulario(propietario=request.user.username, data=request.POST)
        #else:
            #form = formulario(propietario=request.user.username, personaje=personaje, data=request.POST)
        #if form.is_valid():
            #mipj=form.save()
            ##CASUISTICAS:
                ##si entramos en la url "nuevaficha/" (no hay parametro "paso" ni parametro "personaje")
                    ##necesitamos el nombre del personaje extraido del formulario (elemento "mipj") y regenerarnos una url al paso 1
                ##si entramos en la url "personaje/<pj>/" (no hay parametro "paso", pero si parametro "personaje")
                    ##simplemente entramos desde la url actual a la "paso1"
                ##si entramos en la url "personaje/<pj>/paso1" (hay tanto parametro "paso", com parametro "personaje")
                    ##incrementamos el paso al paso siguiente
            #if paso is None:
                #if personaje is None:
                    #return HttpResponseRedirect(reverse('paso1', args=[mipj]))
                #else:
                    #return HttpResponseRedirect(reverse('paso1', args=[personaje]))
            #elif paso == 0: #el paso 0 es igual que si no hay paso, para que avance al siguiente paso
                #return HttpResponseRedirect(reverse('paso1', args=[personaje]))
            #else:   #en el resto de pasos, prefiero que se quede en el mismo paso al guardar para ver los cambios
                #return HttpResponseRedirect(reverse('paso%d' % paso, args=[personaje]))
                
    ##si vamos a mostrar la ficha de primeras, y nos interesa reutilizar el formulario
    ##para que tambien podamos mostrar fichas creadas previamente, lo mejor es seguir este
    ##proceso:
    #else:
        #try:
            ##si existe una ficha sin validar para el personaje en cuestion, la extrae y
            ##la muestra al usuario
            #elem = FichaAnimaSinValidar.objects.get(propietario=jug, personaje=personaje)
            #for attr, value in elem.__dict__.iteritems():
                #diccionario[attr] = value
        #except FichaAnimaSinValidar.DoesNotExist:
            #try:
                ##si no existe una ficha sin validar, pero si que existe una validada
                ##para el pj en cuestion, se extrae y se muestra al usuario
                #elem = FichaAnima.objects.get(propietario=jug, personaje=personaje)
                #for attr, value in elem.__dict__.iteritems():
                    #diccionario[attr] = value
            #except FichaAnima.DoesNotExist:
                ##si no existe ninguna ficha para ese personaje, se lanza un formulario
                ##vacio para que se cree nueva la ficha con el nombre que se quiere
                #if paso is None:
                    ##NUEVA RESTRICCION: si algun listillo llama a una url del tipo:
                    ## .../gestor/<pj_no_existente>/paso<elquesea>/
                    ##lo debe redireccionar a la pantalla inicial de creacion de ficha, puesto
                    ##que no debe poder crear una ficha empezando por un paso distinto al inicial
                    #diccionario['personaje'] = personaje
                #else:
                    ##con esto, al intentar lo que he explicado arriba, se redirecciona
                    ##automaticamente a
                    ##.../gestor/<pj_no_existente>/
                    ##el cual ya se encarga de hacerle una fichita nueva con sus datos vacios
                    ##return HttpResponseRedirect('../')
                    #return HttpResponseRedirect(reverse('paso0', args=[personaje]))
        
        #if paso is None:
            #form = formulario(propietario=request.user.username, initial=diccionario)
        #else:
            #info_ficha['personaje'] = elem.personaje
            #if paso == 3:
                #info_ficha['vent_fijas'] = elem.ventajas.all()
                #info_ficha['desvent_fijas'] = elem.desventajas.all()
                #info_ficha['vent_prop'] = elem.ventajas_prop.all()
                #info_ficha['desvent_prop'] = elem.desventajas_prop.all()
            #else:
                #form = formulario(propietario=request.user.username, personaje=personaje, initial=diccionario)
                #if paso == 4:
                    #info_ficha['hab_esp'] = elem.especiales.all()
                #elif paso == 5:
                    #info_ficha['armas'] = elem.armas.all()
    #return render_to_response(template_name,{'tipoform':"ficha", 'form':form, 'info_ficha':info_ficha, 'laficha':laficha}, context_instance=RequestContext(request))

#@login_required
#def borra_ficha(request, personaje, extra_context={}):
    #if request.user.is_authenticated():
        #jug = Jugador.objects.get(jugador=request.user)
        ##NOTA DE DISEÑO: HABRIA QUE PONER UNA RESTRICCION DE FORMA QUE NO SE PUEDA
        ##BORRAR UNA FICHA SI ESTA PARTICIPANDO EN UNA PARTIDA
        ##del tipo:
        ##if not FichaAnima.objects.get(propietario=jug, personaje=personaje).partida:
        #try:
            #fsvborrar = FichaAnimaSinValidar.objects.get(propietario=jug, personaje=personaje)
            #FichaAnimaSinValidar.delete(fsvborrar)
        #except FichaAnimaSinValidar.DoesNotExist:
            #pass
        #try:
            #borrar = FichaAnima.objects.get(propietario=jug, personaje=personaje)
            #FichaAnima.delete(borrar)
        #except FichaAnima.DoesNotExist:
            #pass

    #return render_to_response('inicial.html',extra_context, context_instance=RequestContext(request))


#@login_required
#def nueva_ventaja(request, personaje):
    #if request.user.is_authenticated():
        #prop = Jugador.objects.get(jugador=request.user)
    
    #if request.method == 'POST':
        #form = VentajasForm(data=request.POST)
        #if form.is_valid():
            #form.save_propietario(jugpropietario=prop)
        #return HttpResponseRedirect(reverse('lista_ventajas_prop', args=[personaje]))
    #else:
        #form = VentajasForm()
    #return render_to_response('gestor/formulario_ventdesv.html',{'form':form}, context_instance=RequestContext(request))

#@login_required
#def nueva_desventaja(request,personaje):
    #if request.user.is_authenticated():
        #prop = Jugador.objects.get(jugador=request.user)
    
    #if request.method == 'POST':
        #form = DesventajasForm(data=request.POST)
        #if form.is_valid():
            #form.save_propietario(jugpropietario=prop)
        #return HttpResponseRedirect(reverse('lista_desventajas_prop', args=[personaje]))
    #else:
        #form = DesventajasForm()
    #return render_to_response('gestor/formulario_ventdesv.html',{'form':form}, context_instance=RequestContext(request))

#@login_required
#def nueva_hab_esp(request, personaje):
    #if request.user.is_authenticated():
        #prop = Jugador.objects.get(jugador=request.user)
    
    #if request.method == 'POST':
        #form = HabilidadSecForm(data=request.POST)
        #if form.is_valid():
            #form.save_propietario(jugpropietario=prop)
        #return HttpResponseRedirect(reverse('lista_hab_esp', args=[personaje]))
    #else:
        #form = HabilidadSecForm()
    #return render_to_response('gestor/formulario_habsec.html',{'form':form}, context_instance=RequestContext(request))


#@login_required
#def listar_ventajas(request, personaje):
    #if request.user.is_authenticated():
        #prop = Jugador.objects.get(jugador=request.user)
        #ficha_jugador = FichaAnima.objects.get(propietario=prop, personaje=personaje)
        #lista_elegidas = ficha_jugador.ventajas.all()
        #pj = ficha_jugador.personaje
    #lista = VentajasFijas.objects.all()
    #return render_to_response('gestor/listado.html',{'lista':lista, 'lista_elegidas':lista_elegidas, 'pj':pj, 'tipo':"ventaja"}, context_instance=RequestContext(request))

#@login_required
#def elegir_ventaja(request, personaje, ventaja_id):
    #if request.user.is_authenticated():
        #prop = Jugador.objects.get(jugador=request.user)
        #ficha_jugador = FichaAnima.objects.get(propietario=prop, personaje=personaje)
        #la_ventaja = VentajasFijas.objects.get(id=ventaja_id)
        #ficha_jugador.ventajas.add(la_ventaja)
        #ficha_jugador.save()
    #return HttpResponseRedirect(reverse('lista_ventajas', args=[personaje]))

#@login_required
#def quitar_ventaja(request, personaje, ventaja_id):
    #if request.user.is_authenticated():
        #prop = Jugador.objects.get(jugador=request.user)
        #ficha_jugador = FichaAnima.objects.get(propietario=prop, personaje=personaje)
        #la_ventaja = VentajasFijas.objects.get(id=ventaja_id)
        #ficha_jugador.ventajas.remove(la_ventaja)
        #ficha_jugador.save()
    #return HttpResponseRedirect(reverse('lista_ventajas', args=[personaje]))


#@login_required
#def listar_ventajas_prop(request, personaje):
    #if request.user.is_authenticated():
        #prop = Jugador.objects.get(jugador=request.user)
        #ficha_jugador = FichaAnima.objects.get(propietario=prop, personaje=personaje)
        #lista_elegidas = ficha_jugador.ventajas_prop.all()
        #pj = ficha_jugador.personaje
    #lista = VentajasDependientes.objects.filter(propietario=prop)
    #return render_to_response('gestor/listado.html',{'lista':lista, 'lista_elegidas':lista_elegidas, 'pj':pj, 'tipo':"vent_propia"}, context_instance=RequestContext(request))
    
#@login_required
#def elegir_ventaja_prop(request, personaje, ventaja_id):
    #if request.user.is_authenticated():
        #prop = Jugador.objects.get(jugador=request.user)
        #ficha_jugador = FichaAnima.objects.get(propietario=prop, personaje=personaje)
        #la_ventaja = VentajasDependientes.objects.get(id=ventaja_id)
        #ficha_jugador.ventajas_prop.add(la_ventaja)
        #ficha_jugador.save()
    #return HttpResponseRedirect(reverse('lista_ventajas_prop', args=[personaje]))

#@login_required
#def quitar_ventaja_prop(request, personaje, ventaja_id):
    #if request.user.is_authenticated():
        #prop = Jugador.objects.get(jugador=request.user)
        #ficha_jugador = FichaAnima.objects.get(propietario=prop, personaje=personaje)
        #la_ventaja = VentajasDependientes.objects.get(id=ventaja_id)
        #ficha_jugador.ventajas_prop.remove(la_ventaja)
        #ficha_jugador.save()
    #return HttpResponseRedirect(reverse('lista_ventajas_prop', args=[personaje]))


#@login_required
#def listar_desventajas(request, personaje):
    #if request.user.is_authenticated():
        #prop = Jugador.objects.get(jugador=request.user)
        #ficha_jugador = FichaAnima.objects.get(propietario=prop, personaje=personaje)
        #lista_elegidas = ficha_jugador.desventajas.all()
        #pj = ficha_jugador.personaje
    #lista = DesventajasFijas.objects.all()
    #return render_to_response('gestor/listado.html',{'lista':lista, 'lista_elegidas':lista_elegidas, 'pj':pj, 'tipo':"desventaja"}, context_instance=RequestContext(request))

#@login_required
#def elegir_desventaja(request, personaje, desventaja_id):
    #if request.user.is_authenticated():
        #prop = Jugador.objects.get(jugador=request.user)
        #ficha_jugador = FichaAnima.objects.get(propietario=prop, personaje=personaje)
        #la_desventaja = DesventajasFijas.objects.get(id=desventaja_id)
        #ficha_jugador.desventajas.add(la_desventaja)
        #ficha_jugador.save()
    #return HttpResponseRedirect(reverse('lista_desventajas', args=[personaje]))

#@login_required
#def quitar_desventaja(request, personaje, desventaja_id):
    #if request.user.is_authenticated():
        #prop = Jugador.objects.get(jugador=request.user)
        #ficha_jugador = FichaAnima.objects.get(propietario=prop, personaje=personaje)
        #la_desventaja = DesventajasFijas.objects.get(id=desventaja_id)
        #ficha_jugador.desventajas.remove(la_desventaja)
        #ficha_jugador.save()
    #return HttpResponseRedirect(reverse('lista_desventajas', args=[personaje]))

#@login_required
#def listar_desventajas_prop(request, personaje):
    #if request.user.is_authenticated():
        #prop = Jugador.objects.get(jugador=request.user)
        #ficha_jugador = FichaAnima.objects.get(propietario=prop, personaje=personaje)
        #lista_elegidas = ficha_jugador.desventajas_prop.all()
        #pj = ficha_jugador.personaje
    #lista = DesventajasDependientes.objects.filter(propietario=prop)
    #return render_to_response('gestor/listado.html',{'lista':lista, 'lista_elegidas':lista_elegidas, 'pj':pj, 'tipo':"desvent_propia"}, context_instance=RequestContext(request))
    
#@login_required
#def elegir_desventaja_prop(request, personaje, desventaja_id):
    #if request.user.is_authenticated():
        #prop = Jugador.objects.get(jugador=request.user)
        #ficha_jugador = FichaAnima.objects.get(propietario=prop, personaje=personaje)
        #la_desventaja = DesventajasDependientes.objects.get(id=desventaja_id)
        #ficha_jugador.desventajas_prop.add(la_desventaja)
        #ficha_jugador.save()
    #return HttpResponseRedirect(reverse('lista_desventajas_prop', args=[personaje]))

#@login_required
#def quitar_desventaja_prop(request, personaje, desventaja_id):
    #if request.user.is_authenticated():
        #prop = Jugador.objects.get(jugador=request.user)
        #ficha_jugador = FichaAnima.objects.get(propietario=prop, personaje=personaje)
        #la_desventaja = DesventajasDependientes.objects.get(id=desventaja_id)
        #ficha_jugador.desventajas_prop.remove(la_desventaja)
        #ficha_jugador.save()
    #return HttpResponseRedirect(reverse('lista_desventajas_prop', args=[personaje]))


#@login_required
#def listar_hab_esp(request, personaje):
    #if request.user.is_authenticated():
        #prop = Jugador.objects.get(jugador=request.user)
        #ficha_jugador = FichaAnima.objects.get(propietario=prop, personaje=personaje)
        #lista_elegidas = ficha_jugador.especiales.all()
        #pj = ficha_jugador.personaje
    #lista = HabilidadesSecundariasDependientes.objects.filter(propietario=prop)
    #return render_to_response('gestor/listado.html',{'lista':lista, 'lista_elegidas':lista_elegidas, 'pj':pj, 'tipo':"hab_esp"}, context_instance=RequestContext(request))

#@login_required
#def elegir_hab_esp(request, personaje, hab_id):
    #if request.user.is_authenticated():
        #prop = Jugador.objects.get(jugador=request.user)
        #ficha_jugador = FichaAnima.objects.get(propietario=prop, personaje=personaje)
        #la_hab = HabilidadesSecundariasDependientes.objects.get(id=hab_id)
        #ficha_jugador.especiales.add(la_hab)
        #ficha_jugador.save()
    #return HttpResponseRedirect(reverse('lista_hab_esp', args=[personaje]))

#@login_required
#def quitar_hab_esp(request, personaje, hab_id):
    #if request.user.is_authenticated():
        #prop = Jugador.objects.get(jugador=request.user)
        #ficha_jugador = FichaAnima.objects.get(propietario=prop, personaje=personaje)
        #la_hab = HabilidadesSecundariasDependientes.objects.get(id=hab_id)
        #ficha_jugador.especiales.remove(la_hab)
        #ficha_jugador.save()
    #return HttpResponseRedirect(reverse('lista_hab_esp', args=[personaje]))

#@login_required
#def listar_armas(request, personaje):
    #if request.user.is_authenticated():
        #prop = Jugador.objects.get(jugador=request.user)
        #ficha_jugador = FichaAnima.objects.get(propietario=prop, personaje=personaje)
        #lista_elegidas = ficha_jugador.armas.all()
        #pj = ficha_jugador.personaje
    #lista = Arma.objects.all()
    #return render_to_response('gestor/listado.html',{'lista':lista, 'lista_elegidas':lista_elegidas, 'pj':pj, 'tipo':"arma"}, context_instance=RequestContext(request))

#@login_required
#def elegir_arma(request, personaje, arma_id):
    #if request.user.is_authenticated():
        #prop = Jugador.objects.get(jugador=request.user)
        #ficha_jugador = FichaAnima.objects.get(propietario=prop, personaje=personaje)
        #el_arma = Arma.objects.get(id=arma_id)
        #ficha_jugador.armas.add(el_arma)
        #ficha_jugador.save()
    #return HttpResponseRedirect(reverse('lista_armas', args=[personaje]))

#@login_required
#def quitar_arma(request, personaje, arma_id):
    #if request.user.is_authenticated():
        #prop = Jugador.objects.get(jugador=request.user)
        #ficha_jugador = FichaAnima.objects.get(propietario=prop, personaje=personaje)
        #el_arma = Arma.objects.get(id=arma_id)
        #ficha_jugador.armas.remove(el_arma)
        #ficha_jugador.save()
    #return HttpResponseRedirect(reverse('lista_armas', args=[personaje]))

#@login_required
#def ver_ficha(request, personaje, jugador=None, extra_context = {}, template_name='gestor/detalle_ficha.html'):
    #if not jugador:
        #extra_context['jug'] = Jugador.objects.get(jugador=request.user)
        #extra_context['ficha'] = FichaAnima.objects.get(propietario=extra_context['jug'], personaje=personaje)
    #else:
        #usuario = User.objects.get(username=jugador)
        #extra_context['jug'] = Jugador.objects.get(jugador=usuario)
        #extra_context['ficha'] = FichaAnima.objects.get(propietario=extra_context['jug'], personaje=personaje)
    #return render_to_response(template_name,extra_context, context_instance=RequestContext(request))

